package com.margo.project.datastructure.binarytree;
/**
 * 二叉树
 * 本文来自 拭心 的CSDN 博客 ，
 * 全文地址请点击：
 * https://blog.csdn.net/u011240877/article/details/53193918?utm_source=copy 
 */
public class BinaryTree {
	private BinaryTreeNode root;

	public BinaryTreeNode getRoot() {
		return root;
	}

	public void setRoot(BinaryTreeNode root) {
		this.root = root;
	}

	/**
	 * 先序遍历
	 * @param node
	 */
	public void iterateFirstOrder(BinaryTreeNode node) {
		if(node==null) {
			return;
		}
		operate(node);
		iterateFirstOrder(node.getLeftChild());
		iterateFirstOrder(node.getRightChild());
	}

	private void operate(BinaryTreeNode node){
	    if (node == null){
	        return;
	    }
	    System.out.print(node.getData()+",");
	}
	
	/**
	 * 中序遍历
	 * @param node
	 */
	public void iterateMediumOrder(BinaryTreeNode node) {
		if(node==null) {
			return;
		}
		iterateMediumOrder(node.getLeftChild());
		operate(node);
		iterateMediumOrder(node.getRightChild());
	}

	
	/**
	 * 后序遍历
	 * @param node
	 */
	public void iterateLastOrder(BinaryTreeNode node) {
		if(node==null) {
			return;
		}
		iterateLastOrder(node.getLeftChild());
		iterateLastOrder(node.getRightChild());
		operate(node);
	}
	
}